Storages each including a nonvolatile memory have been widely used in recent years.
One of these storages currently known is a solid state drive (SSD) including a NAND flash memory. The SSD is used as a main storage for various types of computing devices.
The SSD performs a garbage collection (GC) operation to move valid data in a garbage collection source block (GC source block) to a garbage collection destination block (GC destination block), and to generate a free block. After an erase process is subjected to the free block, the free block is available as a new write destination block.
For example, a block containing a small amount of valid data is selected as the GC source block. By selecting such a GC source block, a larger number of free blocks can be efficiently generated.
On the other hand, a block containing a large amount of valid data is unlikely to be selected as a GC source block. Accordingly, redundant capacity (over provisioning (OP)) corresponding to invalid data areas in the block remains unavailable for data writing. When a large number of blocks each containing a large amount of valid data, a large number of invalid data areas are therefore present.